/************************************************************************
 * Este archivo, representa metodos y variables relacionadas con las altas
 * bajas y modificaciones de la cochera
 * 
 * @system: veco-system
 * @description: Sistema de control vehicular
 * @version: 1.0
 * @Copyright © 2013 
 * 
 * @authores:
 * 
 *      > Alberione, Fernando    <falberione_037@gmail.com>
 * 
 *      > Boretto, Martin        <martinboretto@gmail.com>
 * 
 *      > Lenarduzzi, Federico   <fedeatenas@gmail.com>
 * 
 *      > Ocampo, Emanuel        <eocampo86@gmail.com>
 *
 *************************************************************************/

package SistemaCocheras;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class manejadorCochera{

    private Connection conexion = null;
    
    
    // ---------------------------------------------------------
    // ------- Seccion de constructores de la clase
    // ---------------------------------------------------------    

    /**
     * Constructor NO vacio
     */
    public manejadorCochera(Connection c){
        this.conexion = c;
    }// Fin constructor


    
    // ---------------------------------------------------------
    // ------- Seccion de metodos publicos
    // ---------------------------------------------------------    

    /**
     * Funcion encargada de buscar y devolver toda la informacion correspondiente a la 
     * cochera
     * @return res 
     * @throws SQLException 
     */
    public ResultSet buscarCochera() throws SQLException{
        ResultSet res = null;
        Statement statemen = this.conexion.createStatement();
        String query = "SELECT * FROM cochera;";
        res = statemen.executeQuery(query);
        return res;
    }// Fin buscarCochera

    
    /**
     * Funcion encargada de actualizar los datos de las tarifas de cada tipo de
     * automotor con los correspondientes valores pasados como parametro.
     * @param nombre Representa el nombre nombre de la cochera a actualizar
     * @param direccion Representa la direccion direccion de la cochera a actualizar
     * @param telefono Representa el telefono telefono de la cochera a actualizar
     * @param hs Representa las horas correspondientes al inicio del arqueo de caja
     * @param cap Representa la capacidad correspondiente a la cochera
     * @param minPerm Representa los minutos permitidos para la estadia
     * @param aQuinceMin Representa el valor correspondiente al cuarto de hora por auto
     * @param aMedia Representa el valor correspondiente a la media hora por auto
     * @param aHs Representa el valor correspondiente a la hora por auto
     * @param aDia Representa el valor correspondiente al dia por auto
     * @param aNoche Representa el valor correspondiente a la noche por auto
     * @param aSem Representa el valor correspondiente a la semana por auto
     * @param aQuin Representa el valor correspondiente a la quincena por auto
     * @param aMes Representa el valor correspondiente al mes por auto
     * @param cQuinceMin Representa el valor correspondiente al cuarto de hora por camioneta
     * @param cMedia Representa el valor correspondiente a la media hora por camioneta
     * @param cHs Representa el valor correspondiente a la hora por camioneta
     * @param cDia Representa el valor correspondiente al dia por camioneta
     * @param cNoche Representa el valor correspondiente a la noche por camioneta
     * @param cSem Representa el valor correspondiente a la semana por camioneta
     * @param cQuin Representa el valor correspondiente a la quincena por camioneta
     * @param cMes Representa el valor correspondiente al mes por camioneta
     * @param mQuinceMin Representa el valor correspondiente al cuarto de hora por moto
     * @param mMedia Representa el valor correspondiente a la media hora por moto
     * @param mHs Representa el valor correspondiente a la hora por moto
     * @param mDia Representa el valor correspondiente al dia por moto
     * @param mNoche Representa el valor correspondiente a la noche por moto
     * @param mSem Representa el valor correspondiente a la semana por moto
     * @param mQuin Representa el valor correspondiente a la quincena por moto
     * @param mMes Representa el  valor correspondiente al mes por moto
     * @param bQuinceMin Representa el valor correspondiente al cuarto de hora por bici
     * @param bMedia Representa el valor correspondiente a la media hora por bici
     * @param bHs Representa el valor correspondiente a la hora por bici
     * @param bDia Representa el valor correspondiente al dia por bici
     * @param bNoche Representa el valor correspondiente a la noche por bici
     * @param bSem Representa el valor correspondiente a la semana por bici
     * @param bQuin Representa el valor correspondiente a la quincena por bici
     * @param bMes Representa el valor correspondiente al mes por bici
     * @param uQuinceMin Representa el valor correspondiente al cuarto de hora por utilitario
     * @param uMedia Representa el valor correspondiente a la media hora por utilitario
     * @param uHs Representa el valor correspondiente a la hora por utilitario
     * @param uDia Representa el valor correspondiente al dia por utilitario
     * @param uNoche Representa el valor correspondiente a la noche por utilitario
     * @param uSem Representa el valor correspondiente a la semana por utilitario
     * @param uQuin Representa el valor correspondiente a la quincena por utilitario
     * @param uMes Representa el valor correspondiente al mes por utilitario
     * @throws IOException
     * @throws SQLException 
     */
    public void actualizarCochera(String nombre, String direccion, String telefono, String hs, int cap, int minPerm,
                                  double aQuinceMin, double aMedia, double aHs, double aDia, double aNoche, double aSem, double aQuin, double aMes,
                                  double cQuinceMin, double cMedia, double cHs, double cDia, double cNoche, double cSem, double cQuin, double cMes,
                                  double mQuinceMin, double mMedia, double mHs, double mDia, double mNoche, double mSem, double mQuin, double mMes,
                                  double bQuinceMin, double bMedia, double bHs, double bDia, double bNoche, double bSem, double bQuin, double bMes,
                                  double uQuinceMin, double uMedia, double uHs, double uDia, double uNoche, double uSem, double uQuin, double uMes) throws IOException,SQLException {
      Statement statemen = this.conexion.createStatement();
      String query = "";
      query = "UPDATE  cochera SET "+
              "tarifaquincemin='"+aQuinceMin+"',tarifamediahs='"+aMedia+"',tarifahs='"+aHs+"', tarifadia='"+aDia+"', tarifanoche='"+aNoche+
              "', tarifasemana='"+aSem+"', tarifaquincena='"+aQuin+"', tarifamensual='"+aMes+
              "', tarifaquincemincamioneta='"+cQuinceMin+"', tarifamediahscamioneta='"+cMedia+"', tarifahscamioneta='"+cHs+"', tarifadiacamioneta='"+cDia+"', tarifanochecamioneta='"+cNoche+
              "', tarifasemanacamioneta='"+cSem+"', tarifaquincenacamioneta='"+cQuin+"', tarifamescamioneta='"+cMes+
              "', tarifaquinceminmoto='"+mQuinceMin+"', tarifamediahsmoto='"+mMedia+"',tarifahsmoto='"+mHs+"', tarifadiamoto='"+mDia+"', tarifanochemoto='"+mNoche+
              "', tarifasemanamoto='"+mSem+"', tarifaquincenamoto='"+mQuin+"', tarifamesmoto='"+mMes+
              "', tarifaquinceminbici='"+bQuinceMin+"', tarifamediahsbici='"+bMedia+"',tarifahsbici='"+bHs+"', tarifadiabici='"+bDia+"', tarifanochebici='"+bNoche+
              "', tarifasemanabici='"+bSem+"', tarifaquincenabici='"+bQuin+"', tarifamesbici='"+bMes+
              "', tarifaquinceminutilitario='"+uQuinceMin+"', tarifamediahsutilitario='"+uMedia+"', tarifahsutilitario='"+uHs+"', tarifadiautilitario='"+uDia+"', tarifanocheutilitario='"+uNoche+
              "', tarifasemanautilitario='"+uSem+"', tarifaquincenautilitario='"+uQuin+"', tarifamesutilitario='"+uMes+
              "', nombrecochera='"+nombre+"', direccioncochera='"+direccion+"', telefonocochera='"+telefono+
              "', horainicioperiodo='"+hs+"', cantidad='"+cap+"', max_min_perm='"+minPerm+"' WHERE id_cochera='1';";
      statemen.executeUpdate(query);
    }// Fin actualizarCochera
    

    /**
     * Metodo encargado de retornar la cantidad de lugares de la cochera
     * @return cantidad
     * @throws SQLException 
     */
    public int getCantidad() throws SQLException{
        ResultSet res = null;
        Statement statemen = this.conexion.createStatement();
        String query = "SELECT cantidad FROM cochera;";
        res = statemen.executeQuery(query);
        int cantidad = 0;
        if(res.next()){
            cantidad = Integer.parseInt(res.getObject(1).toString());
        }
        return cantidad;
    }// Fin getCantidad
    

    /**
     * Metodo encargado de obtener el monto de cada tarifa del tipo de 
     * automotor correspondiente al tipo pasado como parametro.
     * @param tipoVehiculo Representa el tipo de automotor
     * @return tarifa
     * @throws SQLException 
     */
    public Double[] obtenerMontoTarifa (int tipoVehiculo) throws SQLException{
        Double [] tarifa = new  Double [8];
        ResultSet res = null;
        final int auto = 0;
        final int camioneta = 1;
        final int moto = 2;
        final int bicicleta = 3;
        final int utilitario = 4;
        res = buscarCochera();
        if (res.next()){
            switch (tipoVehiculo){
                case auto :{
                    tarifa[0] = Double.parseDouble(res.getString("tarifaquincemin"));
                    tarifa[1] = Double.parseDouble(res.getString("tarifamediahs"));
                    tarifa[2] = Double.parseDouble(res.getString("tarifahs"));
                    tarifa[3] = Double.parseDouble(res.getString("tarifadia"));
                    tarifa[4] = Double.parseDouble(res.getString("tarifanoche"));
                    tarifa[5] = Double.parseDouble(res.getString("tarifasemana"));
                    tarifa[6] = Double.parseDouble(res.getString("tarifaquincena"));
                    tarifa[7] = Double.parseDouble(res.getString("tarifamensual"));
                    break;
                }
                case camioneta :{
                    tarifa[0] = Double.parseDouble(res.getString("tarifaquincemincamioneta"));
                    tarifa[1] = Double.parseDouble(res.getString("tarifamediahscamioneta"));
                    tarifa[2] = Double.parseDouble(res.getString("tarifahscamioneta"));
                    tarifa[3] = Double.parseDouble(res.getString("tarifadiacamioneta"));
                    tarifa[4] = Double.parseDouble(res.getString("tarifanochecamioneta"));
                    tarifa[5] = Double.parseDouble(res.getString("tarifasemanacamioneta"));
                    tarifa[6] = Double.parseDouble(res.getString("tarifaquincenacamioneta"));
                    tarifa[7] = Double.parseDouble(res.getString("tarifamescamioneta"));
                    break;
                }
                case moto :{
                    tarifa[0] = Double.parseDouble(res.getString("tarifaquinceminmoto"));
                    tarifa[1] = Double.parseDouble(res.getString("tarifamediahsmoto"));
                    tarifa[2] = Double.parseDouble(res.getString("tarifahsmoto"));
                    tarifa[3] = Double.parseDouble(res.getString("tarifadiamoto"));
                    tarifa[4] = Double.parseDouble(res.getString("tarifanochemoto"));
                    tarifa[5] = Double.parseDouble(res.getString("tarifasemanamoto"));
                    tarifa[6] = Double.parseDouble(res.getString("tarifaquincenamoto"));
                    tarifa[7] = Double.parseDouble(res.getString("tarifamesmoto"));
                    break;
                }
                case bicicleta :{
                    tarifa[0] = Double.parseDouble(res.getString("tarifaquinceminbici"));
                    tarifa[1] = Double.parseDouble(res.getString("tarifamediahsbici"));
                    tarifa[2] = Double.parseDouble(res.getString("tarifahsbici"));
                    tarifa[3] = Double.parseDouble(res.getString("tarifadiabici"));
                    tarifa[4] = Double.parseDouble(res.getString("tarifanochebici"));
                    tarifa[5] = Double.parseDouble(res.getString("tarifasemanabici"));
                    tarifa[6] = Double.parseDouble(res.getString("tarifaquincenabici"));
                    tarifa[7] = Double.parseDouble(res.getString("tarifamesbici"));
                    break;
                }
                case utilitario :{
                    tarifa[0] = Double.parseDouble(res.getString("tarifaquinceminutilitario"));
                    tarifa[1] = Double.parseDouble(res.getString("tarifamediahsutilitario"));
                    tarifa[2] = Double.parseDouble(res.getString("tarifahsutilitario"));
                    tarifa[3] = Double.parseDouble(res.getString("tarifadiautilitario"));
                    tarifa[4] = Double.parseDouble(res.getString("tarifanocheutilitario"));
                    tarifa[5] = Double.parseDouble(res.getString("tarifasemanautilitario"));
                    tarifa[6] = Double.parseDouble(res.getString("tarifaquincenautilitario"));
                    tarifa[7] = Double.parseDouble(res.getString("tarifamesutilitario"));
                    break;
                }                
            }
        }
        return tarifa;
    }// Fin obtenerMontoTarifa

}// Fin class manejadorCliente
